package com.bt.controller.admin;

import com.bt.dto.SysUserDTO;
import com.bt.dto.SysUserPageQueryDTO;
import com.bt.entity.SysUser;
import com.bt.result.PageResult;
import com.bt.result.Result;
import com.bt.service.SysUserService;
import com.bt.vo.SysUserRVO;
import com.bt.vo.SysUserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Description TODO
 * @Author 锟
 * @Date 2023-05-02 21:00
 */
@Api(tags = "管理员管理相关接口")
@RestController
@RequestMapping("/sys_user")
@Slf4j
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;

    /**
     * 管理员管理分页查询
     * @param sysUserPageQueryDTO
     * @return
     */

    @ApiOperation("管理员管理分页查询")
    @GetMapping("/list")
    public Result list(SysUserPageQueryDTO sysUserPageQueryDTO){
        log.info("管理员管理分页查询:{}",sysUserPageQueryDTO);

        //调用管理员管理分页查询
        PageResult pageResult = sysUserService.list(sysUserPageQueryDTO.getPage(),sysUserPageQueryDTO.getLimit(),
                sysUserPageQueryDTO.getLogin_name(),
                sysUserPageQueryDTO.getStatus(),sysUserPageQueryDTO.getPhone());
        //返回数据
        return Result.success(pageResult);
    }



    /**
     * 管理员删除
     */
    @ApiOperation("管理员删除接口")
    @GetMapping("/del")
    public Result detele(String id){
        log.info("管理员删除接口:{]",id);

        //根据id删除数据
        sysUserService.detele(id);

        //返回数据
        return Result.success();
    }


    /**
     * 管理员新增
     */
    @ApiOperation("管理新增接口")
    @PostMapping("/add")
    public Result save(@RequestBody SysUserDTO sysUserDTO){
        log.info("新增管理员:{}",sysUserDTO);

        //添加角色数据
        sysUserService.saveWithRole(sysUserDTO);

        //返回数据
        return Result.success();
    }


    /**
     * 根据id查询管理员回显接口
     */
    @ApiOperation("根据id查询管理员回显接口")
    @GetMapping("/rowInfo")
    public Result findId(String id){
        log.info("根据id查询管理员回显接口:{}",id);

        //调用id查询管理员业务
        SysUser sysUser = sysUserService.findId(id);

        //返回数据
        return Result.success(sysUser);
    }

    /**
     *管理员修改接口
     */
    @ApiOperation("管理员修改接口")
    @PostMapping("/update")
    public Result update(@RequestBody SysUserDTO sysUserDTO){
        log.info("管理员修改接口:{}",sysUserDTO);

        //调用业务修改管理员
        sysUserService.update(sysUserDTO);

        //返回结果
        return Result.success();
    }
}
